#include <iostream>
#include <string>
#include <vector>
#include <sw/redis++/redis++.h>

using namespace std;

void test1(sw::redis::Redis& redis)
{
    redis.flushall();
    vector<pair<string, string>> keys = {
        {"k1", "111"},
        {"k2", "222"},
        {"k3", "333"}
    };
    redis.mset(keys.begin(), keys.end());

    vector<sw::redis::OptionalString> res;
    auto it = back_inserter(res);
    redis.mget({"k1", "k2", "k3"}, it);

    for(auto& e : res)
    {
        cout << e.value() << endl;
    }
}

void test2(sw::redis::Redis& redis)
{
    redis.flushall();
    redis.set("key1", "abcdefghijkl");
    string res = redis.getrange("key1", 2, 5);
    cout << res << endl;

    redis.setrange("key1", 2, "pppp");
    auto it = redis.get("key1");
    cout << it.value() << endl;
}

void test3(sw::redis::Redis& redis)
{
    redis.flushall();
    redis.set("key1", "110");
    auto res = redis.incr("key1");
    cout << res << endl;
    res = redis.decr("key1");
    cout << res << endl;
}
int main()
{
    sw::redis::Redis redis("tcp://127.0.0.1:6379");
    // test1(redis);
    // test2(redis);
    test3(redis);


    return 0;
}